package code.structure.module.task
{
	import code.main.AppCommonData;
	import code.main.core.mvc.YModelData;
	import code.structure.module.configs.ConfigModel;
	import code.structure.module.task.data.TaskData;
	import code.structure.module.task.data.TaskSubData;
	
	import flash.utils.Dictionary;
	
	/**
	 * 任务数据处理模块
	 * @author CYoung
	 * 2014-7-27下午3:29:10
	 */
	public class TaskModel extends YModelData
	{
		/** 已完成的任务列表 */
		private var _finishId:Array;
		/** 正在做的任务 */
		private var _doing:Array;
		/** 所有任务字典 */
		private var _allDictionary:Dictionary;
		
		public var configModel:ConfigModel;
		
		public function TaskModel()
		{
			configModel = (_context.commonData as AppCommonData).configModel;
		}
		/**
		 * 解析任务数据
		 */		
		public function parserData(data:Object):void
		{
			_allDictionary = new Dictionary();
			_finishId = String(data.finishId).split(",");
			for each (var i:Object in data.doing) {
				creatTask(i, i.progress);
			}
		}
		/** 创建任务 */
		private function creatTask(value:Object, progress:Array):void
		{
			var task:TaskData = new TaskData(value);
			task.config = configModel.analysisTask.getTaskConfigById(task.id);
			for (var i:int = 0; i < task.config.subTaskList.length; i++) {
				var sub:TaskSubData = new TaskSubData(task.config.subTaskList[i], progress[i]);
				//检测拥有类型的
				if(!sub.isComplete) task.isComplete = false;
				task.subList.push(sub);
			}
			if(_allDictionary[task.config.type] == null) _allDictionary[task.config.type] = [];
			_allDictionary[task.config.type].push(task);
		}
		/** 任务完成 */		
		public function taskComplete(task:TaskData):void
		{
			//to do 请求后台
		}
		/** 领取奖励*/		
		public function getTaskReward(task:TaskData):void
		{
			//to do 奖励物进仓库
			if(!task.config.nextId) return;
			for (var i:int = 0; i < task.config.nextId.length; i++) {
				creatTask({id:task.config.nextId[i]}, [0, 0, 0]);
			}
		}
		/** 获取同类型的任务数据 */
		public function getTaskListByType(type:int):Array{
			return _allDictionary[type];
		}
		/** 通过类型和ID获取任务数据 */
		public function getTaskByTypeAndId(type:int, id:int):TaskData{
			var arr:Array = _allDictionary[type];
			if(!arr) return null;
			for (var i:int = 0; i < arr.length; i++)  
				if(arr[i].id == id) return arr[i];
			return null;
		}
	}
}